"""
什么是类？
类是一个抽象的概念
比如说空调，这个就是一个抽象的、不存在实物
对象是真实存在的，格力空调，就是基于空调类创造出来的对象

类和对象
"""
# 类关键字：class；类名首字母要大写，符合驼峰命名法
class Student:
    pass
"""
创建了一个Student类
"""
"""
if __name__ == '__main__':      # 主程序运行入口
    # 实例化对象。通过类名称进行创建。通过Student类创建了s1对象。这个s1对象就是真实存在
    s1 = Student()
"""
# ==========================带有初始化方法的类========================
class Student2:
    cls = 'QC5期班级'      # 类属性：归属于类所有
    def __init__(self,name,age,sex,address):        # 初始化函数，在这里面的所有参数，都叫做：实例/对象属性
        """
        实例属性：归属于对象所有
        __xxx__：双下划线开头和结尾的，在python当中叫做：魔术方法
        :param name: 学生名字
        :param age: 年龄
        :param sex: 性别
        :param address: 地址
        """
        # 创建出来的对象，都必须携带的对象属性
        self.name = name
        self.age = age
        self.sex = sex
        self.address = address
        """
        在__init__(self,xxx)方法中重新赋值 self.xxx = xxx，原因是可以在其他的函数/方法里找到它并使用
        相当于是一个全局变量，但是只有在当前的类里面才可以使用
        """
    def course(self):
        # self == 对象
        # 在类里面，任何方法都会携带self，self表示对象本身可以调用函数/方法。叫做：类方法
        print(f"当前学生姓名是：{self.name}，年龄是：{self.age}，性别是：{self.sex}，地址是：{self.address}")


if __name__ == '__main__':
    # 通过Student2来创建对象s1
    s1 = Student2('张三','19','男','营口')
    # 通过Student2创建s2对象
    s2 = Student2('英鸿年','23','男','沈阳')

    # 访问对象属性:name
    # print(s1.name)
    # print(s1.age)
    # 通过对象，访问类属性
    # print(s1.cls)

    # 访问s2的对象属性
    # print(s2.name)

    # 使用对象访问course方法
    # s1.course()
    # s2.course()

    # 使用类来访问course方法
    # Student2.course()       # 会报错，因为没有传入self ，self表示对象。如果直接是对象调用没问题，类调用不可以
    Student2.course(s2)         # 传入对象就可以调用这个方法了

    pass
"""
比如说我是一个人类：
我在创建出来白嘉诚这个对象的时候
1、姓名自带的
2、年龄自带的
3、性别自带的
"""





























